十分钟在 macOS 快速搭建 Linux C/C++ 开发环境 您所在的位置:网站首页 解放你的 hosts 文件从零开始内网搭建 DNS 服务器 十分钟在 macOS 快速搭建 Linux C/C++ 开发环境

十分钟在 macOS 快速搭建 Linux C/C++ 开发环境

2024-06-02 18:01| 来源: 网络整理| 查看: 265

有一个使用了 Epoll 的 C 项目,笔者平时用的 Linux 主力开发机不在身边,想在 macOS 上开发调试,但是没有 Linux 虚拟机。恰好,JetBrains CLion 的 Toolchains 配置除了使用本地环境,还支持 SSH、Docker。

笔者使用 CLion + Docker Desktop,不到十分钟就能在 macOS 上搭建一个能够开发使用 Linux 类库的 C 项目的开发环境,而且具备不错的开发体验。

文章目录 准备 Docker 环境构建一个包含项目所需依赖的 Image准备 Dockerfile 并安装所需依赖构建 Image CLion 配置 ToolchainsToolchains 添加 Docker 环境CMake 项目选择刚才添加的 Docker Toolchain 开发体验头文件导航直接运行调试运行 【更新】CLion Debug 控制台没有日志

准备 Docker 环境

macOS 使用 Docker Desktop 即可,本文不赘述。 当然,Docker 环境也可以不在本地,可以通过 TCP 或者 SSH 连接非本地 Docker 环境。

在这里插入图片描述

构建一个包含项目所需依赖的 Image 准备 Dockerfile 并安装所需依赖

笔者的主力开发机是 Ubuntu 22.04,选择相同的系统作为基础镜像。 镜像构建按照项目所需依赖即可。以下是搭建一个最基本的 C/C++ 环境的 Dockerfile。

FROM ubuntu:22.04 MAINTAINER [email protected] RUN apt update && apt install -y cmake g++ gdb

提示:如果所在环境无法加速访问 Ubuntu 官方 apt 源,建议使用国内 apt 源。

将 sources.list 覆盖基础镜像中原有的 sources.list。

FROM ubuntu:22.04 MAINTAINER [email protected] ARG TARGETARCH COPY $TARGETARCH/sources.list /etc/apt/sources.list RUN apt update && apt install -y cmake g++ gdb

构建 x86/64 架构的环境可以使用以下 sources.list

deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse # deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse # deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse # deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse # deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse

构建 aarch64 及其他架构的环境可以使用以下 sources.list

deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy main restricted universe multiverse # deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy main restricted universe multiverse deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-updates main restricted universe multiverse # deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-updates main restricted universe multiverse deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-backports main restricted universe multiverse # deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-backports main restricted universe multiverse deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-security main restricted universe multiverse # deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-security main restricted universe multiverse 构建 Image >>> docker build -t teslacn/cmake:1.0 . [+] Building 16.4s (8/8) FINISHED => [internal] load build definition from Dockerfile 0.0s => => transferring dockerfile: 37B 0.0s => [internal] load .dockerignore 0.0s => => transferring context: 2B 0.0s => [internal] load metadata for docker.io/library/ubuntu:22.04 16.3s => [1/3] FROM docker.io/library/ubuntu:22.04@sha256:f154feaf13b51d16e 0.0s => [internal] load build context 0.0s => => transferring context: 65B 0.0s => CACHED [2/3] COPY arm64/sources.list /etc/apt/sources.list 0.0s => CACHED [3/3] RUN apt update && apt install -y cmake g++ gdb 0.0s => exporting to image 0.0s => => exporting layers 0.0s => => writing image sha256:b4ad8d6c3284e79dedcf8c628b1a89c0bb59d29000 0.0s => => naming to docker.io/teslacn/cmake:1.0 0.0s CLion 配置 Toolchains Toolchains 添加 Docker 环境

选择构建好的镜像即可,CLion 会自动检测构建工具、编译器、GDB 版本。 在这里插入图片描述

CMake 项目选择刚才添加的 Docker Toolchain

在这里插入图片描述

开发体验 头文件导航

CLion 自动将容器中的 Linux 头文件缓存在了本地,从代码中能够直接导航到 sys/epoll.h 文件,使用起来和直接在 Linux 环境开发没有区别。 在这里插入图片描述

直接运行

与平时本地运行相比完全没有差异。 在这里插入图片描述

调试运行

调试运行发现,除了程序的日志没有打出到 stdout 以外,其他调试功能和本地调试完全没有差异。

在这里插入图片描述

在这里插入图片描述

以上即环境搭建的过程与结果。

【更新】CLion Debug 控制台没有日志

解决方法:

setbuf(stdout, 0);

https://stackoverflow.com/questions/47776094/clion-wont-show-output-in-debug



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有